import { get, post, put, del, getWithPagination, postWithPagination } from './commonApi.js'

/**
 * 示例API - 用户相关接口
 */
export const userApi = {
  /**
   * 获取用户列表（分页查询）
   * @param {Object} options - 分页选项
   * @param {number} options.currentPage - 当前页码，默认为1
   * @param {number} options.size - 每页数量，默认为10
   * @param {Object} options.otherParams - 其他查询参数
   * @param {string} options.otherParams.keyword - 搜索关键词
   * @param {string} options.otherParams.status - 用户状态
   * @returns {Promise} 分页用户列表数据
   */
  getUserList: (options = {}) => {
    return getWithPagination('/users', options)
  },

  /**
   * 获取用户详情
   * @param {string} userId - 用户ID
   * @returns {Promise} 用户详情数据
   */
  getUserDetail: (userId) => {
    return get(`/users/${userId}`)
  },

  /**
   * 创建用户
   * @param {Object} userData - 用户数据
   * @param {string} userData.name - 用户名
   * @param {string} userData.email - 邮箱
   * @param {string} userData.phone - 手机号
   * @returns {Promise} 创建结果
   */
  createUser: (userData) => {
    return post('/users', userData)
  },

  /**
   * 更新用户信息
   * @param {string} userId - 用户ID
   * @param {Object} userData - 更新的用户数据
   * @returns {Promise} 更新结果
   */
  updateUser: (userId, userData) => {
    return put(`/users/${userId}`, userData)
  },

  /**
   * 删除用户
   * @param {string} userId - 用户ID
   * @returns {Promise} 删除结果
   */
  deleteUser: (userId) => {
    return del(`/users/${userId}`)
  }
}

/**
 * 示例API - 课程相关接口
 */
export const courseApi = {
  /**
   * 获取课程列表（分页查询）
   * @param {Object} options - 分页选项
   * @param {number} options.currentPage - 当前页码，默认为1
   * @param {number} options.size - 每页数量，默认为10
   * @param {Object} options.otherParams - 其他查询参数
   * @param {string} options.otherParams.major - 专业筛选
   * @param {string} options.otherParams.semester - 学期筛选
   * @param {string} options.otherParams.keyword - 课程名称关键词
   * @returns {Promise} 分页课程列表数据
   */
  getCourseList: (options = {}) => {
    return getWithPagination('/courses', options)
  },

  /**
   * 获取课程详情
   * @param {string} courseId - 课程ID
   * @returns {Promise} 课程详情数据
   */
  getCourseDetail: (courseId) => {
    return get(`/courses/${courseId}`)
  },

  /**
   * 创建课程
   * @param {Object} courseData - 课程数据
   * @param {string} courseData.name - 课程名称
   * @param {string} courseData.code - 课程代码
   * @param {string} courseData.major - 所属专业
   * @param {number} courseData.credits - 学分
   * @returns {Promise} 创建结果
   */
  createCourse: (courseData) => {
    return post('/courses', courseData)
  },

  /**
   * 更新课程信息
   * @param {string} courseId - 课程ID
   * @param {Object} courseData - 更新的课程数据
   * @returns {Promise} 更新结果
   */
  updateCourse: (courseId, courseData) => {
    return put(`/courses/${courseId}`, courseData)
  },

  /**
   * 删除课程
   * @param {string} courseId - 课程ID
   * @returns {Promise} 删除结果
   */
  deleteCourse: (courseId) => {
    return del(`/courses/${courseId}`)
  }
}

/**
 * 示例API - 目标相关接口
 */
export const goalApi = {
  /**
   * 获取目标列表（分页查询）
   * @param {Object} options - 分页选项
   * @param {number} options.currentPage - 当前页码，默认为1
   * @param {number} options.size - 每页数量，默认为10
   * @param {Object} options.otherParams - 其他查询参数
   * @param {string} options.otherParams.courseId - 课程ID
   * @param {string} options.otherParams.type - 目标类型
   * @param {string} options.otherParams.keyword - 目标名称关键词
   * @returns {Promise} 分页目标列表数据
   */
  getGoalList: (options = {}) => {
    return getWithPagination('/goals', options)
  },

  /**
   * 获取目标详情
   * @param {string} goalId - 目标ID
   * @returns {Promise} 目标详情数据
   */
  getGoalDetail: (goalId) => {
    return get(`/goals/${goalId}`)
  },

  /**
   * 创建目标
   * @param {Object} goalData - 目标数据
   * @param {string} goalData.name - 目标名称
   * @param {string} goalData.description - 目标描述
   * @param {string} goalData.courseId - 关联课程ID
   * @param {string} goalData.type - 目标类型
   * @returns {Promise} 创建结果
   */
  createGoal: (goalData) => {
    return post('/goals', goalData)
  },

  /**
   * 更新目标信息
   * @param {string} goalId - 目标ID
   * @param {Object} goalData - 更新的目标数据
   * @returns {Promise} 更新结果
   */
  updateGoal: (goalId, goalData) => {
    return put(`/goals/${goalId}`, goalData)
  },

  /**
   * 删除目标
   * @param {string} goalId - 目标ID
   * @returns {Promise} 删除结果
   */
  deleteGoal: (goalId) => {
    return del(`/goals/${goalId}`)
  }
}

export default {
  userApi,
  courseApi,
  goalApi
} 